package jsen.tool.ddd.adapter.event;

import com.google.common.reflect.TypeToken;

/**
 * 所有消费者需要继承的类
 *
 * @author jsen
 * @date 2021/10/6
 */
@SuppressWarnings("UnstableApiUsage")
public interface Consumer<E extends DomainEvent> {
    void accept(E t);

    /**
     * 默供使用事件类名字match
     */
    default boolean match(DomainEvent domainEvent) {
        TypeToken<E> paramToken = new TypeToken<E>(getClass()) {
        };
        return paramToken.getRawType().equals(domainEvent.getClass());
    }
}
